#ifndef POINT_H
#define POINT_H

#include "shape.h"

class Point : public Shape
{
public:
    Point();
    Point(const Point& pt);
    Point(double x, double y, double z = 0);

    Point& operator = (const Point& pt);

    Point operator + (const Point& pt) const;
    Point operator - (const Point& pt) const;

    double dot(const Point& pt);
    Point cross(const Point& pt);

    void normalize();

    virtual void draw();
    double& x(){return _x;}
    double& y(){return _y;}
    double& z(){return _z;}
    double distance(Point& pt) const;

protected:
    double _x, _y, _z;
};

typedef Point Vector;

#endif // POINT_H
